#ifndef			__POKEMON_H__
# define		__POKEMON_H__
# include		<iostream>
# include		<string>
# include		<vector>
# include		"Stats.h"
# include		"Skill.h"

class												Pokemon
{
public:
	//	Constructor / Destructor
	Pokemon();
	~Pokemon();
	//	Operator
	const Pokemon &									operator=(const Pokemon &);
	//	Accessor
	const int										getNumber() const;
	const int										getExp() const;
	const float										getHeight() const;
	const float										getWeight() const;
	Stats &											getStats();
	const std::string &								getAbility() const;
	const std::string &								getDescription() const;
	const std::string &								getName() const;
	const std::string &								getSpecies() const;
	const std::pair<float, float> &					getRatio() const;
	const std::vector<std::string> &					getTypes() const;
	const std::vector<std::string> &					getEggGroup() const;
	const std::vector<std::pair<std::string, int> > &	getSkills() const;
	const std::vector<std::pair<std::string, int> > &	getEvolutions() const;
	//	Mutator
	void											setNumber(const int val);
	void											setExp(const int val);
	void											setHeight(const float val);
	void											setWeight(const float val);
	void											setStats(const Stats &val);
	void											setAbility(const std::string val);
	void											setDescription(const std::string val);
	void											setName(const std::string val);
	void											setSpecies(const std::string val);
	void											setRatio(const std::pair<float, float> val);
	void											setTypes(const std::vector<std::string> val);
	void											addTypes(const std::string val);
	void											setEggGroup(const std::vector<std::string> val);
	void											addEggGroup(const std::string val);
	void											setSkills(const std::vector<std::pair<std::string, int> > val);
	void											setEvolutions(const std::vector<std::pair<std::string, int> > val);
private:
	int												_Number;
	int												_Exp;
	float											_Height;
	float											_Weight;	
	Stats											_pokeStats;
	std::string										_Ability;
	std::string										_Description;
	std::string										_Name;
	std::string										_Species;
	std::pair<float, float>							_Ratio;
	std::vector<std::string>						_Types;
	std::vector<std::string>						_EggGroup;
	std::vector<std::pair<std::string, int> >		_Skills;
	std::vector<std::pair<std::string, int> >		_Evolutions;
};

#endif			__POKEMON_H__